package com.lecture.javamode.principle.ocp.after;

import java.util.ArrayList;
import java.util.List;

/**
 * @author luyn
 * @version 1.0
 * @description
 * @date 2022/1/11 14:08
 */
public class Alert {
    private List<AlertHandler> alertHandlers = new ArrayList<>();

    public void addAlertHandler(AlertHandler alertHandler) {
        this.alertHandlers.add(alertHandler);
    }

    public void check(ApiStatInfo apiStatInfo) {
        for (AlertHandler handler : alertHandlers) {
            handler.check(apiStatInfo);
        }
    }
    //基于当前格式，如果在增加新功能：每秒钟接口请求个数超过某个最大阈值就告警，我们只需要扩展验证类就行，不需要修改原有代码
    //1：在ApiStatInfo中增加timeoutCount属性。
    //2：添加新的timeoutAlertHandler类
    //3：在applicationContext中的initializeBeans()方法中，往alert对象中注册新的handler.
    //3：在使用alert类的时候，需要给check()方法的入参apiStatInfo对象设置timeoutCount的值。
}






